/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Clases;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author Bryan
 */
@Entity
@Table(name = "gradoseccionciclo")
@NamedQueries({
    @NamedQuery(name = "Gradoseccionciclo.findAll", query = "SELECT g FROM Gradoseccionciclo g"),
    @NamedQuery(name = "Gradoseccionciclo.findByIdGradoSeccionCiclo", query = "SELECT g FROM Gradoseccionciclo g WHERE g.idGradoSeccionCiclo = :idGradoSeccionCiclo"),
    @NamedQuery(name = "Gradoseccionciclo.findByCapacidad", query = "SELECT g FROM Gradoseccionciclo g WHERE g.capacidad = :capacidad"),
    @NamedQuery(name = "Gradoseccionciclo.findByAula", query = "SELECT g FROM Gradoseccionciclo g WHERE g.aula = :aula")})
public class Gradoseccionciclo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idGradoSeccionCiclo")
    private Short idGradoSeccionCiclo;
    @Basic(optional = false)
    @Column(name = "Capacidad")
    private short capacidad;
    @Basic(optional = false)
    @Column(name = "Aula")
    private String aula;
    @ManyToMany(mappedBy = "gradoseccioncicloCollection")
    private Collection<Alumno> alumnoCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "gradoseccionciclo")
    private Collection<Catedraticocurso> catedraticocursoCollection;
    @JoinColumn(name = "idSeccion", referencedColumnName = "idSeccion")
    @ManyToOne(optional = false)
    private Seccion seccion;
    @JoinColumn(name = "idGrado", referencedColumnName = "idGrado")
    @ManyToOne(optional = false)
    private Grado grado;
    @JoinColumn(name = "idCiclo", referencedColumnName = "idCiclo")
    @ManyToOne(optional = false)
    private Ciclo ciclo;

    public Gradoseccionciclo() {
    }

    public Gradoseccionciclo(Short idGradoSeccionCiclo) {
        this.idGradoSeccionCiclo = idGradoSeccionCiclo;
    }

    public Gradoseccionciclo(Short idGradoSeccionCiclo, short capacidad, String aula) {
        this.idGradoSeccionCiclo = idGradoSeccionCiclo;
        this.capacidad = capacidad;
        this.aula = aula;
    }

    public Short getIdGradoSeccionCiclo() {
        return idGradoSeccionCiclo;
    }

    public void setIdGradoSeccionCiclo(Short idGradoSeccionCiclo) {
        this.idGradoSeccionCiclo = idGradoSeccionCiclo;
    }

    public short getCapacidad() {
        return capacidad;
    }

    public void setCapacidad(short capacidad) {
        this.capacidad = capacidad;
    }

    public String getAula() {
        return aula;
    }

    public void setAula(String aula) {
        this.aula = aula;
    }

    public Collection<Alumno> getAlumnoCollection() {
        return alumnoCollection;
    }

    public void setAlumnoCollection(Collection<Alumno> alumnoCollection) {
        this.alumnoCollection = alumnoCollection;
    }

    public Collection<Catedraticocurso> getCatedraticocursoCollection() {
        return catedraticocursoCollection;
    }

    public void setCatedraticocursoCollection(Collection<Catedraticocurso> catedraticocursoCollection) {
        this.catedraticocursoCollection = catedraticocursoCollection;
    }

    public Seccion getSeccion() {
        return seccion;
    }

    public void setSeccion(Seccion seccion) {
        this.seccion = seccion;
    }

    public Grado getGrado() {
        return grado;
    }

    public void setGrado(Grado grado) {
        this.grado = grado;
    }

    public Ciclo getCiclo() {
        return ciclo;
    }

    public void setCiclo(Ciclo ciclo) {
        this.ciclo = ciclo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idGradoSeccionCiclo != null ? idGradoSeccionCiclo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Gradoseccionciclo)) {
            return false;
        }
        Gradoseccionciclo other = (Gradoseccionciclo) object;
        if ((this.idGradoSeccionCiclo == null && other.idGradoSeccionCiclo != null) || (this.idGradoSeccionCiclo != null && !this.idGradoSeccionCiclo.equals(other.idGradoSeccionCiclo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "escuela.Gradoseccionciclo[idGradoSeccionCiclo=" + idGradoSeccionCiclo + "]";
    }

}
